package stu.day9_day18;

import java.util.*;
/*
题目描述
统计热点词频；输入一个字符串，统计词频后，按照词频从高到低打印热搜单词（出现次数大于等于3的单词）
对于两个词频相同的单词，要按单词字典序打印。
输入描述
一行字符串。仅由小写字母和空格组成。代表小红的搜索记录。
字符串长度不超过100000.

输出描述
小红所有的关键词。每行输出一个。你需要按照搜索频次从高到低输出。频次相同的，你需要按字典序升序输出。

示例
输入
kou red game red ok who game red karaoke yukari kou red red nani kou can koukou ongakugame game

输出
red
game
kou
 */
public class train4 {
    public static void main(String[] args) {

        Scanner sc =new Scanner(System.in);
        String str[] = sc.nextLine().split(" ");

        HashMap<String,Integer> map = new HashMap<>();
        for (String s:str){
            if(!map.containsKey(s)){
                map.put(s,1);
            }else{
                int l = map.get(s)+1;
                map.put(s,l);
            }
        }

        List<Map.Entry<String,Integer>> list = new ArrayList<>();
        Set<Map.Entry<String,Integer>> set = map.entrySet();
        for(Map.Entry<String,Integer> m :set){
            if(m.getValue()>=3){
                list.add(m);
            }
        }

        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                if(o1.getValue()==o2.getValue()) {
                    return o1.getKey().compareTo(o2.getKey());
                }else {
                    return o2.getValue()-o1.getValue();
                }
            }
        });



        for ( Map.Entry<String,Integer> m :list){
            System.out.println(m.getKey()+" : "+m.getValue());
        }






    }
}
